// Copyright (c) .NET Foundation and Contributors. All Rights Reserved. Licensed under the MIT License (MIT). See License.md in the repository root for more information.
// Ported from https://github.com/dotnet/clangsharp/blob/main/sources/libClangSharp

namespace ClangSharp.Interop;

public enum CX_StmtClass
{
    CX_StmtClass_Invalid,
    CX_StmtClass_WhileStmt,
    CX_StmtClass_LabelStmt,
    CX_StmtClass_VAArgExpr,
    CX_StmtClass_UnaryOperator,
    CX_StmtClass_UnaryExprOrTypeTraitExpr,
    CX_StmtClass_TypoExpr,
    CX_StmtClass_TypeTraitExpr,
    CX_StmtClass_SubstNonTypeTemplateParmPackExpr,
    CX_StmtClass_SubstNonTypeTemplateParmExpr,
    CX_StmtClass_StringLiteral,
    CX_StmtClass_StmtExpr,
    CX_StmtClass_SourceLocExpr,
    CX_StmtClass_SizeOfPackExpr,
    CX_StmtClass_ShuffleVectorExpr,
    CX_StmtClass_SYCLUniqueStableNameExpr,
    CX_StmtClass_RequiresExpr,
    CX_StmtClass_RecoveryExpr,
    CX_StmtClass_PseudoObjectExpr,
    CX_StmtClass_PredefinedExpr,
    CX_StmtClass_ParenListExpr,
    CX_StmtClass_ParenExpr,
    CX_StmtClass_PackIndexingExpr,
    CX_StmtClass_PackExpansionExpr,
    CX_StmtClass_UnresolvedMemberExpr,
    CX_StmtClass_UnresolvedLookupExpr,
    CX_StmtClass_FirstOverloadExpr = CX_StmtClass_UnresolvedMemberExpr,
    CX_StmtClass_LastOverloadExpr = CX_StmtClass_UnresolvedLookupExpr,
    CX_StmtClass_OpenACCAsteriskSizeExpr,
    CX_StmtClass_OpaqueValueExpr,
    CX_StmtClass_OffsetOfExpr,
    CX_StmtClass_ObjCSubscriptRefExpr,
    CX_StmtClass_ObjCStringLiteral,
    CX_StmtClass_ObjCSelectorExpr,
    CX_StmtClass_ObjCProtocolExpr,
    CX_StmtClass_ObjCPropertyRefExpr,
    CX_StmtClass_ObjCMessageExpr,
    CX_StmtClass_ObjCIvarRefExpr,
    CX_StmtClass_ObjCIsaExpr,
    CX_StmtClass_ObjCIndirectCopyRestoreExpr,
    CX_StmtClass_ObjCEncodeExpr,
    CX_StmtClass_ObjCDictionaryLiteral,
    CX_StmtClass_ObjCBoxedExpr,
    CX_StmtClass_ObjCBoolLiteralExpr,
    CX_StmtClass_ObjCAvailabilityCheckExpr,
    CX_StmtClass_ObjCArrayLiteral,
    CX_StmtClass_OMPIteratorExpr,
    CX_StmtClass_OMPArrayShapingExpr,
    CX_StmtClass_NoInitExpr,
    CX_StmtClass_MemberExpr,
    CX_StmtClass_MatrixSubscriptExpr,
    CX_StmtClass_MaterializeTemporaryExpr,
    CX_StmtClass_MSPropertySubscriptExpr,
    CX_StmtClass_MSPropertyRefExpr,
    CX_StmtClass_LambdaExpr,
    CX_StmtClass_IntegerLiteral,
    CX_StmtClass_InitListExpr,
    CX_StmtClass_ImplicitValueInitExpr,
    CX_StmtClass_ImaginaryLiteral,
    CX_StmtClass_HLSLOutArgExpr,
    CX_StmtClass_GenericSelectionExpr,
    CX_StmtClass_GNUNullExpr,
    CX_StmtClass_FunctionParmPackExpr,
    CX_StmtClass_ExprWithCleanups,
    CX_StmtClass_ConstantExpr,
    CX_StmtClass_FirstFullExpr = CX_StmtClass_ExprWithCleanups,
    CX_StmtClass_LastFullExpr = CX_StmtClass_ConstantExpr,
    CX_StmtClass_FloatingLiteral,
    CX_StmtClass_FixedPointLiteral,
    CX_StmtClass_ExtVectorElementExpr,
    CX_StmtClass_ExpressionTraitExpr,
    CX_StmtClass_EmbedExpr,
    CX_StmtClass_DesignatedInitUpdateExpr,
    CX_StmtClass_DesignatedInitExpr,
    CX_StmtClass_DependentScopeDeclRefExpr,
    CX_StmtClass_DependentCoawaitExpr,
    CX_StmtClass_DeclRefExpr,
    CX_StmtClass_CoyieldExpr,
    CX_StmtClass_CoawaitExpr,
    CX_StmtClass_FirstCoroutineSuspendExpr = CX_StmtClass_CoyieldExpr,
    CX_StmtClass_LastCoroutineSuspendExpr = CX_StmtClass_CoawaitExpr,
    CX_StmtClass_ConvertVectorExpr,
    CX_StmtClass_ConceptSpecializationExpr,
    CX_StmtClass_CompoundLiteralExpr,
    CX_StmtClass_ChooseExpr,
    CX_StmtClass_CharacterLiteral,
    CX_StmtClass_ImplicitCastExpr,
    CX_StmtClass_ObjCBridgedCastExpr,
    CX_StmtClass_CXXStaticCastExpr,
    CX_StmtClass_CXXReinterpretCastExpr,
    CX_StmtClass_CXXDynamicCastExpr,
    CX_StmtClass_CXXConstCastExpr,
    CX_StmtClass_CXXAddrspaceCastExpr,
    CX_StmtClass_FirstCXXNamedCastExpr = CX_StmtClass_CXXStaticCastExpr,
    CX_StmtClass_LastCXXNamedCastExpr = CX_StmtClass_CXXAddrspaceCastExpr,
    CX_StmtClass_CXXFunctionalCastExpr,
    CX_StmtClass_CStyleCastExpr,
    CX_StmtClass_BuiltinBitCastExpr,
    CX_StmtClass_FirstExplicitCastExpr = CX_StmtClass_ObjCBridgedCastExpr,
    CX_StmtClass_LastExplicitCastExpr = CX_StmtClass_BuiltinBitCastExpr,
    CX_StmtClass_FirstCastExpr = CX_StmtClass_ImplicitCastExpr,
    CX_StmtClass_LastCastExpr = CX_StmtClass_BuiltinBitCastExpr,
    CX_StmtClass_CallExpr,
    CX_StmtClass_UserDefinedLiteral,
    CX_StmtClass_CXXOperatorCallExpr,
    CX_StmtClass_CXXMemberCallExpr,
    CX_StmtClass_CUDAKernelCallExpr,
    CX_StmtClass_FirstCallExpr = CX_StmtClass_CallExpr,
    CX_StmtClass_LastCallExpr = CX_StmtClass_CUDAKernelCallExpr,
    CX_StmtClass_CXXUuidofExpr,
    CX_StmtClass_CXXUnresolvedConstructExpr,
    CX_StmtClass_CXXTypeidExpr,
    CX_StmtClass_CXXThrowExpr,
    CX_StmtClass_CXXThisExpr,
    CX_StmtClass_CXXStdInitializerListExpr,
    CX_StmtClass_CXXScalarValueInitExpr,
    CX_StmtClass_CXXRewrittenBinaryOperator,
    CX_StmtClass_CXXPseudoDestructorExpr,
    CX_StmtClass_CXXParenListInitExpr,
    CX_StmtClass_CXXNullPtrLiteralExpr,
    CX_StmtClass_CXXNoexceptExpr,
    CX_StmtClass_CXXNewExpr,
    CX_StmtClass_CXXInheritedCtorInitExpr,
    CX_StmtClass_CXXFoldExpr,
    CX_StmtClass_CXXDependentScopeMemberExpr,
    CX_StmtClass_CXXDeleteExpr,
    CX_StmtClass_CXXDefaultInitExpr,
    CX_StmtClass_CXXDefaultArgExpr,
    CX_StmtClass_CXXConstructExpr,
    CX_StmtClass_CXXTemporaryObjectExpr,
    CX_StmtClass_FirstCXXConstructExpr = CX_StmtClass_CXXConstructExpr,
    CX_StmtClass_LastCXXConstructExpr = CX_StmtClass_CXXTemporaryObjectExpr,
    CX_StmtClass_CXXBoolLiteralExpr,
    CX_StmtClass_CXXBindTemporaryExpr,
    CX_StmtClass_BlockExpr,
    CX_StmtClass_BinaryOperator,
    CX_StmtClass_CompoundAssignOperator,
    CX_StmtClass_FirstBinaryOperator = CX_StmtClass_BinaryOperator,
    CX_StmtClass_LastBinaryOperator = CX_StmtClass_CompoundAssignOperator,
    CX_StmtClass_AtomicExpr,
    CX_StmtClass_AsTypeExpr,
    CX_StmtClass_ArrayTypeTraitExpr,
    CX_StmtClass_ArraySubscriptExpr,
    CX_StmtClass_ArraySectionExpr,
    CX_StmtClass_ArrayInitLoopExpr,
    CX_StmtClass_ArrayInitIndexExpr,
    CX_StmtClass_AddrLabelExpr,
    CX_StmtClass_ConditionalOperator,
    CX_StmtClass_BinaryConditionalOperator,
    CX_StmtClass_FirstAbstractConditionalOperator = CX_StmtClass_ConditionalOperator,
    CX_StmtClass_LastAbstractConditionalOperator = CX_StmtClass_BinaryConditionalOperator,
    CX_StmtClass_FirstExpr = CX_StmtClass_VAArgExpr,
    CX_StmtClass_LastExpr = CX_StmtClass_BinaryConditionalOperator,
    CX_StmtClass_AttributedStmt,
    CX_StmtClass_FirstValueStmt = CX_StmtClass_LabelStmt,
    CX_StmtClass_LastValueStmt = CX_StmtClass_AttributedStmt,
    CX_StmtClass_SwitchStmt,
    CX_StmtClass_DefaultStmt,
    CX_StmtClass_CaseStmt,
    CX_StmtClass_FirstSwitchCase = CX_StmtClass_DefaultStmt,
    CX_StmtClass_LastSwitchCase = CX_StmtClass_CaseStmt,
    CX_StmtClass_SYCLKernelCallStmt,
    CX_StmtClass_SEHTryStmt,
    CX_StmtClass_SEHLeaveStmt,
    CX_StmtClass_SEHFinallyStmt,
    CX_StmtClass_SEHExceptStmt,
    CX_StmtClass_ReturnStmt,
    CX_StmtClass_OpenACCWaitConstruct,
    CX_StmtClass_OpenACCUpdateConstruct,
    CX_StmtClass_OpenACCShutdownConstruct,
    CX_StmtClass_OpenACCSetConstruct,
    CX_StmtClass_OpenACCInitConstruct,
    CX_StmtClass_OpenACCExitDataConstruct,
    CX_StmtClass_OpenACCEnterDataConstruct,
    CX_StmtClass_OpenACCLoopConstruct,
    CX_StmtClass_OpenACCHostDataConstruct,
    CX_StmtClass_OpenACCDataConstruct,
    CX_StmtClass_OpenACCComputeConstruct,
    CX_StmtClass_OpenACCCombinedConstruct,
    CX_StmtClass_FirstOpenACCAssociatedStmtConstruct = CX_StmtClass_OpenACCLoopConstruct,
    CX_StmtClass_LastOpenACCAssociatedStmtConstruct = CX_StmtClass_OpenACCCombinedConstruct,
    CX_StmtClass_FirstOpenACCConstructStmt = CX_StmtClass_OpenACCWaitConstruct,
    CX_StmtClass_LastOpenACCConstructStmt = CX_StmtClass_OpenACCCombinedConstruct,
    CX_StmtClass_ObjCForCollectionStmt,
    CX_StmtClass_ObjCAutoreleasePoolStmt,
    CX_StmtClass_ObjCAtTryStmt,
    CX_StmtClass_ObjCAtThrowStmt,
    CX_StmtClass_ObjCAtSynchronizedStmt,
    CX_StmtClass_ObjCAtFinallyStmt,
    CX_StmtClass_ObjCAtCatchStmt,
    CX_StmtClass_OMPTeamsDirective,
    CX_StmtClass_OMPTaskyieldDirective,
    CX_StmtClass_OMPTaskwaitDirective,
    CX_StmtClass_OMPTaskgroupDirective,
    CX_StmtClass_OMPTaskDirective,
    CX_StmtClass_OMPTargetUpdateDirective,
    CX_StmtClass_OMPTargetTeamsDirective,
    CX_StmtClass_OMPTargetParallelForDirective,
    CX_StmtClass_OMPTargetParallelDirective,
    CX_StmtClass_OMPTargetExitDataDirective,
    CX_StmtClass_OMPTargetEnterDataDirective,
    CX_StmtClass_OMPTargetDirective,
    CX_StmtClass_OMPTargetDataDirective,
    CX_StmtClass_OMPSingleDirective,
    CX_StmtClass_OMPSectionsDirective,
    CX_StmtClass_OMPSectionDirective,
    CX_StmtClass_OMPScopeDirective,
    CX_StmtClass_OMPScanDirective,
    CX_StmtClass_OMPParallelSectionsDirective,
    CX_StmtClass_OMPParallelMasterDirective,
    CX_StmtClass_OMPParallelMaskedDirective,
    CX_StmtClass_OMPParallelDirective,
    CX_StmtClass_OMPOrderedDirective,
    CX_StmtClass_OMPMetaDirective,
    CX_StmtClass_OMPMasterDirective,
    CX_StmtClass_OMPMaskedDirective,
    CX_StmtClass_OMPUnrollDirective,
    CX_StmtClass_OMPTileDirective,
    CX_StmtClass_OMPReverseDirective,
    CX_StmtClass_OMPInterchangeDirective,
    CX_StmtClass_FirstOMPLoopTransformationDirective = CX_StmtClass_OMPUnrollDirective,
    CX_StmtClass_LastOMPLoopTransformationDirective = CX_StmtClass_OMPInterchangeDirective,
    CX_StmtClass_OMPTeamsGenericLoopDirective,
    CX_StmtClass_OMPTeamsDistributeSimdDirective,
    CX_StmtClass_OMPTeamsDistributeParallelForSimdDirective,
    CX_StmtClass_OMPTeamsDistributeParallelForDirective,
    CX_StmtClass_OMPTeamsDistributeDirective,
    CX_StmtClass_OMPTaskLoopSimdDirective,
    CX_StmtClass_OMPTaskLoopDirective,
    CX_StmtClass_OMPTargetTeamsGenericLoopDirective,
    CX_StmtClass_OMPTargetTeamsDistributeSimdDirective,
    CX_StmtClass_OMPTargetTeamsDistributeParallelForSimdDirective,
    CX_StmtClass_OMPTargetTeamsDistributeParallelForDirective,
    CX_StmtClass_OMPTargetTeamsDistributeDirective,
    CX_StmtClass_OMPTargetSimdDirective,
    CX_StmtClass_OMPTargetParallelGenericLoopDirective,
    CX_StmtClass_OMPTargetParallelForSimdDirective,
    CX_StmtClass_OMPSimdDirective,
    CX_StmtClass_OMPParallelMasterTaskLoopSimdDirective,
    CX_StmtClass_OMPParallelMasterTaskLoopDirective,
    CX_StmtClass_OMPParallelMaskedTaskLoopSimdDirective,
    CX_StmtClass_OMPParallelMaskedTaskLoopDirective,
    CX_StmtClass_OMPParallelGenericLoopDirective,
    CX_StmtClass_OMPParallelForSimdDirective,
    CX_StmtClass_OMPParallelForDirective,
    CX_StmtClass_OMPMasterTaskLoopSimdDirective,
    CX_StmtClass_OMPMasterTaskLoopDirective,
    CX_StmtClass_OMPMaskedTaskLoopSimdDirective,
    CX_StmtClass_OMPMaskedTaskLoopDirective,
    CX_StmtClass_OMPGenericLoopDirective,
    CX_StmtClass_OMPForSimdDirective,
    CX_StmtClass_OMPForDirective,
    CX_StmtClass_OMPDistributeSimdDirective,
    CX_StmtClass_OMPDistributeParallelForSimdDirective,
    CX_StmtClass_OMPDistributeParallelForDirective,
    CX_StmtClass_OMPDistributeDirective,
    CX_StmtClass_FirstOMPLoopDirective = CX_StmtClass_OMPTeamsGenericLoopDirective,
    CX_StmtClass_LastOMPLoopDirective = CX_StmtClass_OMPDistributeDirective,
    CX_StmtClass_FirstOMPLoopBasedDirective = CX_StmtClass_OMPUnrollDirective,
    CX_StmtClass_LastOMPLoopBasedDirective = CX_StmtClass_OMPDistributeDirective,
    CX_StmtClass_OMPInteropDirective,
    CX_StmtClass_OMPFlushDirective,
    CX_StmtClass_OMPErrorDirective,
    CX_StmtClass_OMPDispatchDirective,
    CX_StmtClass_OMPDepobjDirective,
    CX_StmtClass_OMPCriticalDirective,
    CX_StmtClass_OMPCancellationPointDirective,
    CX_StmtClass_OMPCancelDirective,
    CX_StmtClass_OMPBarrierDirective,
    CX_StmtClass_OMPAtomicDirective,
    CX_StmtClass_OMPAssumeDirective,
    CX_StmtClass_FirstOMPExecutableDirective = CX_StmtClass_OMPTeamsDirective,
    CX_StmtClass_LastOMPExecutableDirective = CX_StmtClass_OMPAssumeDirective,
    CX_StmtClass_OMPCanonicalLoop,
    CX_StmtClass_NullStmt,
    CX_StmtClass_MSDependentExistsStmt,
    CX_StmtClass_IndirectGotoStmt,
    CX_StmtClass_IfStmt,
    CX_StmtClass_GotoStmt,
    CX_StmtClass_ForStmt,
    CX_StmtClass_DoStmt,
    CX_StmtClass_DeclStmt,
    CX_StmtClass_CoroutineBodyStmt,
    CX_StmtClass_CoreturnStmt,
    CX_StmtClass_ContinueStmt,
    CX_StmtClass_CompoundStmt,
    CX_StmtClass_CapturedStmt,
    CX_StmtClass_CXXTryStmt,
    CX_StmtClass_CXXForRangeStmt,
    CX_StmtClass_CXXCatchStmt,
    CX_StmtClass_BreakStmt,
    CX_StmtClass_MSAsmStmt,
    CX_StmtClass_GCCAsmStmt,
    CX_StmtClass_FirstAsmStmt = CX_StmtClass_MSAsmStmt,
    CX_StmtClass_LastAsmStmt = CX_StmtClass_GCCAsmStmt,
    CX_StmtClass_FirstStmt = CX_StmtClass_WhileStmt,
    CX_StmtClass_LastStmt = CX_StmtClass_GCCAsmStmt,
}
